import { NestFactory } from '@nestjs/core';
import { ConfigService } from '@nestjs/config';
import { Logger } from '@nestjs/common';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
import { join } from 'path';
import * as express from 'express';
import * as bodyParser from 'body-parser';

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  const logger = new Logger('NestApplication');
  const configService = app.get(ConfigService);
  const port = configService.get<number>('PORT', 3000);

  // 设置视图目录（存放 HTML 模板的文件夹）
  app.useStaticAssets(join(__dirname, '..', 'public')); // 静态资源目录（可选）
  app.setBaseViewsDir(join(__dirname, '..', 'views')); // 模板文件目录
  app.setViewEngine('ejs'); // 指定模板引擎

  // 配置静态文件夹（例如：public 目录）
  app.use(express.static(join(__dirname, '..', 'public')));
  // 关键：为 XML 类型请求保留原始缓冲区
  app.use(
    bodyParser.text({
      type: 'text/xml', // 只针对 XML 类型
      limit: '5mb', // 限制大小（根据需求调整）
      verify: (req: any, res, buf) => {
        req = buf;
      },
    }),
  );

  // 保留 JSON 解析（针对其他接口）
  app.use(bodyParser.json());
  await app.listen(port);
  logger.log(`Application listening on: http://127.0.0.1:${port}`);
}
void bootstrap();
